/**
 */
package org.mro.grib.model.files.secondEdition.dataRepresentations;


/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Data Representation Template541</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate541#getReferenceValue <em>Reference Value</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate541#getBinaryScaleFactor <em>Binary Scale Factor</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate541#getDecimalScaleFactor <em>Decimal Scale Factor</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate541#getScaledAndReferencedValueBitsNumber <em>Scaled And Referenced Value Bits Number</em>}</li>
 *   <li>{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate541#getTypeOfOriginalFieldsValues <em>Type Of Original Fields Values</em>}</li>
 * </ul>
 * </p>
 *
 * @see org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationsPackage#getDataRepresentationTemplate541()
 * @model annotation="http://www.eclipse.org/emf/2002/GenModel description_en='Grid point data \u2013 Portable Network Graphics (PNG) format' note_1_en='For most templates, details of the packing process are described in Regulation 92.9.4.' note_2_en='The purpose of this template is to scale the grid point data to obtain the desired precision, if appropriate, and then\r\nsubtract out the reference value from the scaled field, as is done using data representation template 5.0. After this, the\r\nresulting grid point field can be treated as an image and is then encoded into PNG format. To unpack the data field, the\r\nPNG stream is decoded back into an image, and the original field is obtained from the image data as described in\r\nRegulation 92.9.4, Note 4.' note_3_en='PNG does not support all bit-depths in an image, so it is necessary to define which depths can be used and how they\r\nare to be treated. For grayscale images, PNG supports depths of 1, 2, 4, 8 or 16 bits. Red-Green-Blue (RGB) colour\r\nimages can have depths of 8 or 16 bits with an optional alpha sample. Valid values for octet 20 can be:\r\n1, 2, 4, 8, or 16 : Treat as grayscale image\r\n24 : Treat as RGB colour image (each component having 8-bit depth)\r\n32 : Treat as RGB w/ alpha sample colour image (each component having 8-bit depth)' note_4_en='The order of the data points should remain as specified in the scanning mode flags (Flag table 3.4) set in the appropriate\r\ngrid definition template, even though the PNG standard specifies that an image is stored starting at the top left corner and\r\nscans each row from left to right, starting with the top row. Users should set the image width to Ni (or Nx) and the\r\nheight to Nj (or Ny) if bit 3 of the scanning mode flag equals 0 (adjacent points in i (x) order), when encoding the \"image\".\r\nIf bit 3 of the scanning mode flags equals 1 (adjacent points in j (y) order), it may be advantageous to set the image width\r\nto Nj (or Ny) and the height to Ni (or Nx).' note_5_en='This template should not be used when the data points are not available on a rectangular grid, such as occurs if some\r\ndata points are bit-mapped out or if section 3 describes a quasi-regular grid. If it is necessary to use this template on\r\nsuch a grid, the data field can be treated as a one-dimensional image where the height is set to 1 and the width is set\r\nto the total number of data points specified in octets 6\u20139.' note_6_en='Negative values of E or D shall be represented according to Regulation 92.1.5.'"
 * @generated
 */
public interface DataRepresentationTemplate541 extends IDataRepresentation {
	/**
	 * Returns the value of the '<em><b>Reference Value</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Reference Value</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Reference Value</em>' attribute.
	 * @see #setReferenceValue(int)
	 * @see org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationsPackage#getDataRepresentationTemplate541_ReferenceValue()
	 * @model required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='R' description_en='Reference value (IEEE 32-bit floating-point value)'"
	 * @generated
	 */
	int getReferenceValue();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate541#getReferenceValue <em>Reference Value</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Reference Value</em>' attribute.
	 * @see #getReferenceValue()
	 * @generated
	 */
	void setReferenceValue(int value);

	/**
	 * Returns the value of the '<em><b>Binary Scale Factor</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Binary Scale Factor</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Binary Scale Factor</em>' attribute.
	 * @see #setBinaryScaleFactor(short)
	 * @see org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationsPackage#getDataRepresentationTemplate541_BinaryScaleFactor()
	 * @model required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='E' description_en='Binary scale factor'"
	 * @generated
	 */
	short getBinaryScaleFactor();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate541#getBinaryScaleFactor <em>Binary Scale Factor</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Binary Scale Factor</em>' attribute.
	 * @see #getBinaryScaleFactor()
	 * @generated
	 */
	void setBinaryScaleFactor(short value);

	/**
	 * Returns the value of the '<em><b>Decimal Scale Factor</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Decimal Scale Factor</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Decimal Scale Factor</em>' attribute.
	 * @see #setDecimalScaleFactor(short)
	 * @see org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationsPackage#getDataRepresentationTemplate541_DecimalScaleFactor()
	 * @model required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='D' description_en='Decimal scale factor (D)'"
	 * @generated
	 */
	short getDecimalScaleFactor();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate541#getDecimalScaleFactor <em>Decimal Scale Factor</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Decimal Scale Factor</em>' attribute.
	 * @see #getDecimalScaleFactor()
	 * @generated
	 */
	void setDecimalScaleFactor(short value);

	/**
	 * Returns the value of the '<em><b>Scaled And Referenced Value Bits Number</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Scaled And Referenced Value Bits Number</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Scaled And Referenced Value Bits Number</em>' attribute.
	 * @see #setScaledAndReferencedValueBitsNumber(byte)
	 * @see org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationsPackage#getDataRepresentationTemplate541_ScaledAndReferencedValueBitsNumber()
	 * @model required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='Number of bits required to hold the resulting scaled and referenced data values' description_en='Number of bits required to hold the resulting scaled and referenced data values (i.e. depth\r\nof the image) (see Note 2)'"
	 * @generated
	 */
	byte getScaledAndReferencedValueBitsNumber();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate541#getScaledAndReferencedValueBitsNumber <em>Scaled And Referenced Value Bits Number</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Scaled And Referenced Value Bits Number</em>' attribute.
	 * @see #getScaledAndReferencedValueBitsNumber()
	 * @generated
	 */
	void setScaledAndReferencedValueBitsNumber(byte value);

	/**
	 * Returns the value of the '<em><b>Type Of Original Fields Values</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Type Of Original Fields Values</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Type Of Original Fields Values</em>' attribute.
	 * @see #setTypeOfOriginalFieldsValues(byte)
	 * @see org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationsPackage#getDataRepresentationTemplate541_TypeOfOriginalFieldsValues()
	 * @model required="true"
	 *        annotation="http://www.eclipse.org/emf/2002/GenModel label_en='Type of original field values' description_en='Type of original field values (see Code table 5.1)'"
	 * @generated
	 */
	byte getTypeOfOriginalFieldsValues();

	/**
	 * Sets the value of the '{@link org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationTemplate541#getTypeOfOriginalFieldsValues <em>Type Of Original Fields Values</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Type Of Original Fields Values</em>' attribute.
	 * @see #getTypeOfOriginalFieldsValues()
	 * @generated
	 */
	void setTypeOfOriginalFieldsValues(byte value);

} // DataRepresentationTemplate541
